
# 获取商品分类
from goods.models import GoodsChannel


def get_category():
    categories = {}
    # 查询商品分组频道的所有数据
    channels = GoodsChannel.objects.all()

    # channel 是第二级列表
    for channel in channels:
        group_id = channel.group_id
        if group_id not in categories:
            categories[group_id] = {'channels': [], 'sub_cats': []}


        # 获得 第一级 主键的数据 , 通过第一级主键获得该类目下的分类
        category = channel.category
        categories[group_id]['channels'].append(
            {
                'id' : category.id,
                'name' : category.name,
                'url' : channel.url
            }
        )

        # subs通过父类别访问子类别 category 该表格设置的是一个自关联的方法 , 通过父类id获得获得表内子类数据
        category1 = category.subs.all()
        for re_category in category1:
            sub_cat = []
            categories[group_id]['sub_cats'].append(
                {
                    'id': re_category.id,
                    'name': re_category.name,
                    'sub_cat' : sub_cat
                }
            )
            category2 = re_category.subs.all()
            for sub_category in category2:
                sub_cat.append(
                    {
                        'id': sub_category.id,
                        'name': sub_category.name,

                    }
                )

    return categories